\section{Implementaci\'on}

\subsection{Motor de bases de datos}
El motor de base de datos utilizado para implementar la soluci\'on es PostgreSQL. Fue elegido por ser 
conocido por el equipo de trabajo y por ser un software de bases de datos libre con una importante comunidad de usuarios. \\
Lo que sigue en esta secci\'on es el c\'odigo fuente para la creaci\'on del modelo. Estos c\'odigos fuentes tambien se pueden
encontrar en el directorio ``impl/'' de la entrega.

\subsection{Creaci\'on de la base de datos}
La base de datos se puede crear desde cero ejecutando el script \textit{impl/full.sql}. En este se encuentran sentencias de borrado de
las tablas y demas objetos de la base, seguido de sentencias de creaci\'on de tablas, triggers y vistas. \\
Tambi\'en en el mismo directorio se encuentra este script separado en secciones que se detallan a continuaci\'on.

\subsection{Borrado}
En el script \textit{impl/clean.sql} se encuentran sentencias de borrados de todas las tablas y objetos de la base de datos.

\subsection{Estructura}
La creaci\'on de las tablas de la base de datos se encuentra en el script \textit{impl/schema.sql}.
El archivo consiste en varias centencias del tipo:
\begin{sql}
CREATE TABLE ... (
  ...
);
\end{sql}

\subsection{Restricciones}
En el script \textit{impl/constraints.sql} se encuentran sentencias de creaci\'on de \textit{constraints}, 
\textit{triggers} y \textit{stored procedures} necesarios para implementar las restricciones del modelo.
Entre ellos se encuentra la restricci\'on planteadas en los puntos 4 y 5 de los ``Comentarios de la c\'atedra''. \\
Para el punto 5 se eligi\'o poner restricciones en las tablas que representan una ``jerarqu\'ia''.
Estas restricciones van a verificar que los inserts en una tabla ``hijo'' coincidan con el valor del discriminante en la tabla ``padre''. 
En el modelo hay dos jerarqu\'ias, una tiene la tabla padre \textit{empleado} y la otra la tabla \textit{empleado\_profesional}.

\subsection{Vistas}
La vista propuesta en el punto 2 de los ``Comentarios de la c\'atedra'' se encuentra implementada en el script
\textit{impl/views.sql}

\subsection{Queries}
En el archivo \textit{impl/queries.sql} se encuentran las consultas mencionadas en los puntos 1 y 3 
de los ``Comentarios de la c\'atedra''.
